﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

// 继承用于创建可重用、扩展和修改在其他类中定义的行为的新类。其成员被继承的类成为基类（父类），继承这些成员的类成为派生类（子类）
// 继承是单根性的，也就是说派生类只能继承一个基类，但是继承是可以传递的。

// 由继承的关系我们能够知道，基类有的派生类也有，派生类有的基类可能没有，即派生类可以赋值给基类，但是基类不能赋值给派生类

// 派生类可以继承基类中所有的属性、方法、字段和事件

namespace 继承01
{
    class Program
    {
        static void Main(string[] args)
        {
            // 在创建子类的时候，必须要调用父类的构造方法
            // 调用方式有两种：1.隐式调用、2.显示调用（base）
            // 隐式调用    隐式调用了父类的无参构造器
            Cat c = new Cat();
            c.ID = 1001;
            c.Name = "miaomiao";
            //Console.WriteLine(c.ID + " " + c.Name);
            Console.WriteLine("{0} {1}", c.ID, c.Name);
            c.Run();
            c.CatchMouse();

            Console.WriteLine();
            Console.WriteLine("-------------------------------------------");
            Console.WriteLine();

            Cat cc = new Cat(1002, "mimi");
            Console.WriteLine(cc.ID + " " + cc.Name);

            Console.WriteLine();
            Console.WriteLine("-------------------------------------------");
            Console.WriteLine();

            Cat ccc = new Cat(1003, "maomao", 10);
            Console.WriteLine(ccc.ID + " " + ccc.Name + " " + ccc.Weight);
        }
    }
}
